#ifndef CURVA_COMPUESTA_H_
#define CURVA_COMPUESTA_H_

#include "curva.h"
#include "coord.h"
#include <vector>

class CurvaCompuesta : public Curva {
   private:
      std::vector<const Curva*> curvas;

      const Curva* selectCurva(float i, float &u) const;

   public:
      /*
       * Ninguna copia es realizada.
       * Las curvas agregadas NO son copiadas y deben permanecer
       * validas durante la existencia de esta instancia.
       * */
      void juntar(Curva &curva);

      virtual Coord operator()(float i) const;

      /*
       * Nota:
       *    No hay interpolacion de tangentes entre los puntos de union
       *    de dos o mas curvas.
       * */
      virtual Coord tangente(float i) const;

      /*
       * Es el promedio de los centros de las curvas.
       *
       * */
      //Nota: Orden lineal
      virtual Coord centro() const;

      /*
       * Es el maximo de los grados de las curvas.
       *
       * */
      //Nota: Orden lineal
      virtual size_t grado() const;

};

#endif
